Million

Suite au précédent épisode, il est temps d'en découvrir un peu plus sur la programmation en reprenant un jeu de questions / réponses à l'image de Qui veut gagner des millions.

Objectifs

Si tu gagnais un million, que ferais-tu ?

Je les verserai intégralement à Greenpeace Je les flamberai en achats divers Ça demanderait réflexion... Autre

Pour commencer, on va poser une question au joueur.

Créer un nouveau programme

Pour rappel, on créée un nouveau programme avec la commande suivante:

Cosmos N Million

Afficher la question

Pour afficher une question, il suffit d'éditer le fichier Million.cosmos et d'y ajouter:

Cosmos Q1

Pour vérifier si cela fonctionne, on peut lancer le programme:

Cosmos Q1 Res

Ajouter les propositions

Dans le jeu original, on propose plusieurs possibilités et on pourrait s'inspirer de la question pour ajouter le code suivant:

Cosmos A1

En testant le programme, on s'aperçoit que le résultat n'est pas satisfaisant:

Cosmos A1 Res

Retour de chariot

En fait, on doit indiquer à l'ordinateur si on veut des retours à la ligne ou pas.
En l'occurrence, on en veut plusieurs !
Pour indiquer un retour à la ligne, on utilise la notation \n, ce qui dans notre exemple donnerait:

Cosmos Q1 N

Cosmos A1 Res2

Maintenant que la question est posée, l'utilisateur va appuyer sur le clavier et on va devoir réagir.
S'il répond juste, on affiche la question suivante et sinon on lui dit au revoir.

Lecture du clavier

Avec le verbe Afficher on envoie une information à l'utilisateur (OUTPUT).
Pour le clavier, c'est l'inverse, on reçoit une information de la part de l'utilisateur (INPUT). Dans ce cas, les mots à utiliser sont:

    Récupérer la saisie et la stocker dans la zone mémoire nommée <#zoneMemoire>.

Ajoutons donc ceci au programme:

Cosmos Q1 Input

Et en testant, on remarque que le programme se met en pause. En fait, il attend une saisie du clavier.
Il faut donc entrer un caractère et valider avec la touche ENTER, ce qui donne:

Cosmos Q1 Input Err

On a 2 problèmes à résoudre:

  1. Il faudrait indiquer à l'utilisateur qu'on attend sa réponse
  2. Le message d'erreur indique que l'espace mémoire n'existe pas => on doit le créer

Aide à l'utilisateur

En réutilisant ce qu'on connaît déjà, on va juste afficher du texte pour que l'utilisateur comprenne ce qu'il doit faire:

Cosmos Q1 UserHelp

Gestion de la mémoire

Tiroir

Un ordinateur est un peu comme un bureau avec des tiroirs, ça veut dire qu'on peut y ranger des informations et les retrouver, du moment qu'on se rappelle dans quel tiroir on l'a mis (bien sûr, on pourrait essayer chaque tiroir mais imaginez-vous une commode avec plus de 4 milliards de tiroirs ;-)).

Bref, pour créer un tiroir et lui donner une étiquette pour le retrouver, on écrit:

Cosmos Allouer

Test

Le programme devrait maintenant fonctionner:

Cosmos Q1 Test

Cosmos Q1 React

Maintenant que l'utilisateur a donné sa réponse, on va lui dire s'il peut continuer ou s'il doit déjà s'arrêter.
Pour cela, on va utiliser la syntaxe d'une condition :

Cosmos Q1 React Code

Avec comme résultat pour une mauvaise réponse :

Cosmos Q1 Final1

Et pour une bonne réponse:

Cosmos Q1 Final2

Maintenant que la recette est connue pour une question, il suffit de répéter pour les suivantes.
Voici donc un extrait pour une deuxième question à partir duquel s'inspirer pour préparer 10 questions:

Cosmos Q2

Dans certains extraits de code source, il y avait des lignes précédées par les caractères //.
Ceci indique à l'ordinateur d'ignorer cette ligne et est utilisé pour aider la personne qui programme à se retrouver dans le code.

L'invitation est donc d'en ajouter pour faciliter la lecture ou expliquer un élément particulier:

Cosmos Comment1

Certains éléments se répètent plusieurs fois et au cas où on voudrait les changer plus tard, il est utile de les regrouper :

Cosmos Q2 Identique

Ainsi, on va utiliser la mémoire pour stocker des éléments réutilisables :

Cosmos Q2 Evo2

Comme ça, si on voulait modifier ce message qui se répète partout, il suffit de le faire à un seul endroit:

Cosmos Q2 Evo Example

Next Steps

En partant de la solution actuelle, il est temps d'ajouter encore 8 questions pour arriver au million.
Bon courage ;-)

Cet atelier était riche en découvertes, surtout quand on débute en programmation.
Voici donc un quizz récapitulatif: